// source --> https://sportvitalitas.hu/static/js/all.js /** * main javascript * * @package RaiseApp * @version RaiseApp 2.0.0 */ /*----------------------------------------------------------------------------------- Table of Contents: ----------------------------------------------------------------------------------- 1. Menu 2. SmoothScrolling 3. Tooltip 4. Message Box 5. Bootstrap Responsive Tab 6. carousel for client boxes 7. Parallax animation 8. Text animation 9. Progress Bar 10. Counter 11. Get star marks 12. Get countdown info 13. Filter Box 14. Masonry Grid 15. Slick slider 16. Pre-load 17. pricing table 18. Smooth Scrolling to Target 19. go to top 20. Audio, 21. Social Sharing in header 22. Datepicker -----------------------------------------------------------------------------------*/ (function ($) { // use strict "use strict"; // document ready $(document).ready(function () { // 1. Menu // 1.1 load menu (function () { var _opener = $(".btn-overlay-open"); var _closer = $(".btn-overlay-close"); var _menuPanel = $(".sa-overlay"); _opener.on("click", function () { _opener.hide(); if (!_menuPanel.hasClass("open")) { _menuPanel.addClass("open"); } return false; }); _closer.on("click", function () { _opener.show("slow"); _menuPanel.removeClass("open"); return false; }) })(); var topbarHeight = $(".topbar-variation").length && $(".topbar-variation").is(":visible") ? $(".topbar-variation").height() : 0; // 1.2 resizeTopMenu var highLightMenu = function () { var topNav = $(".x-menu-fixed-top"); var highlighted = "x-highlight"; if ($(document).scrollTop() > topbarHeight) { if (!topNav.hasClass(highlighted)) { topNav.addClass(highlighted); } } else { if (topNav.hasClass(highlighted)) { topNav.removeClass(highlighted); } } }; highLightMenu(); $(window).on("scroll", function () { highLightMenu(); }); // 1.3 resizeTopMenu(off-canvas) var highLightMenu2 = function () { var topNav = $("header.xmenu-fiexd-top"); var highlighted = "x-highlight"; if ($(document).scrollTop() > topbarHeight) { if (!topNav.hasClass(highlighted)) { topNav.addClass(highlighted); $(".menu-section").css({top: $("#wpadminbar").length ? $("#wpadminbar").height() : 0}); } } else { if (topNav.hasClass(highlighted)) { topNav.removeClass(highlighted); $(".menu-section").css({top: "auto"}); } } }; highLightMenu2(); $(document).on("scroll", function () { highLightMenu2(); }); // 2. Smooth scrolling if (!$.browser.mobile && typeof($.fn.niceScroll) == "function") { var barOpts = { cursorcolor: "#888", cursorwidth: "7px", cursorborder: "1px solid #888", horizrailenabled: false, zindex: 999999 }; // nice scroll bar for right popup menu if ($("nav.xmenu").length) { $("nav.xmenu").niceScroll(barOpts); $("nav.xmenu li").on("click", function () { // enable nice scroll for dynamic contents setTimeout(function () { $("nav.xmenu").getNiceScroll().resize() }, 300); }); } } // 3. Tooltip if (typeof($.tooltip) == "function") { $("[data-toggle=\"tooltip\"]").tooltip(); } // 4. Message box if (typeof($.message_boxes) == "function") { $.message_boxes(); } // 5. Bootstrap Responsive Tab if (typeof(fakewaffle) == "object") { fakewaffle.responsiveTabs(['xs', 'sm']); } // initial function, it is running when contents are loaded fully var initFunc = function () { // 6. carousel for client boxes if (typeof($.start_owlcarousel) == "function") { $.start_owlcarousel(); } // 7. Parallax animation if (typeof($.parallax_animation) == "function") { $.parallax_animation(); } // 8. Text animation if (typeof($.text_animation) == "function") { $.text_animation(); } // 9. Progress bar if (typeof($.progressbar) == "function") { $.progressbar(); } // 10. Counter if (typeof($.counter) == "function") { $.counter(); } // 11. Get star marks if (typeof($.set_star_marks) == "function") { $.set_star_marks(); } // 12. Get countdown info if (typeof($.get_countdown_info) == "function") { $.get_countdown_info(); } // 13. Filter Box if (typeof($.fn.filter_box) == "function") { $(".filter-wrap").each(function () { var opts = parseInt($(this).data("filter-col")) > 0 ? {col: parseInt($(this).data("filter-col"))} : {}; $(this).filter_box(opts); }); } // 14. Masonry Grid if ($(".grid-container").length && typeof($.fn.masonryGrid) == "function") { $(".grid-container").masonryGrid(); } // 15. Slick slider if (typeof($.start_slick) == "function") { $.start_slick(); } // show wrapper with fade effect $("body").addClass("body-loaded"); }; // 16. Pre-load if ($("[data-preload-progress]").length && typeof($.preloader) == "function") { var preloaderOpt = $("[data-preload-progress]").data("preload-progress").split("|"); $.preloader({ preloaderPercentEnable: preloaderOpt[1], preloaderLogo: preloaderOpt[0] }, initFunc); } else if ($("body[data-preload-default]").length && $("body[data-preload-default]").data("preload-default")) { var preloaderTpl = "\
\ Circle Loading\
\ "; // add div for pre-load var preloader = $(preloaderTpl).appendTo($("body")).show(); // show wrapper when full contents are loaded $(window).on("load", function () { initFunc(); // initial callback // remove div for pre-load preloader.fadeOut(600, function () { $(this).remove(); }); }); } else { initFunc(); // initial callback } // 17. pricing table $(".pricing-table").on("mouseenter mouseleave", function () { $(this).toggleClass("pricing-table-highlight"); }); // 18. Smooth Scrolling to Target $(".x-menu-wrapper a, nav.xmenu a, a.btn-circle, [data-go]").on("click", function (event) { // Make sure this.hash has a value before overriding default behavior var hash = this.hash; if (hash && $(hash).length) { if ($(hash).hasClass("woo-menu-item")) { return; } // Prevent default anchor click behavior event.preventDefault(); var revisionTop = $("body").hasClass("x-menu-fixed-top") ? $(".x-menu-wrapper").height() : 0; // Using jQuery's animate() method to add smooth page scroll // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area var scrollTime = ($(hash).offset().top - $(document).scrollTop()) / 2, targetScrollTop = $(hash).offset().top - revisionTop; scrollTime = scrollTime > 1200 ? 1200 : scrollTime < 900 ? 900 : scrollTime; // from 600ms to 1200ms // Add hash (#) to URL when done scrolling (default click behavior) if(history.pushState) { history.pushState(null, null, hash); } else { window.location.hash = hash; } // scrolling animation $("html, body").animate({ scrollTop: targetScrollTop > 0 ? targetScrollTop : 0 }, scrollTime); } // End if }); // 19. go to top var topBtn = $("") .appendTo($("body")) .addClass("goto-top") .on("click", function () { var curPos = $(document).scrollTop() / 2; curPos = curPos > 1200 ? 1200 : curPos < 900 ? 900 : curPos; // from 600ms to 1200ms $("html, body").animate({ scrollTop: 0 }, curPos > 1200 ? 1200 : curPos); }), visiblePos = $(window).height() < 300 ? $(window).height() : 300, smartBtn = function () { if ($(document).scrollTop() > visiblePos) { topBtn.addClass("active"); } else { topBtn.removeClass("active"); } }; smartBtn(); $(window).on("scroll", function () { smartBtn(); }); // 20. Audio if (typeof($.fn.audioPlayer) == "function") { $(".wp-playlist audio, audio.wp-audio-shortcode").addClass("embed-audio"); $("audio").each(function() { if (!$(this).hasClass("embed-audio")) { $(this).audioPlayer(); // render audio control box } }); } // 21. Social Sharing in header if ($(".social-share-link").length) { $(document).on("click", ".social-share-link", function (e) { e.preventDefault(); var width = 600, height = 540, top = ($(window).height() - height) / 2, left = ($(window).width() - width) / 2, option = "menubar=no,toolbar=no,resizable=yes,scrollbars=yes,top=" + top + ",left=" + left + ",width=" + width + ",height=" + height; window.open($(this).attr("href"), "Share", option); }); } // 22. Datepicker $.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); if (typeof($.fn.datepicker) == "function" && ($("input[type=date]").prop('type') != "date" || $.browser.chrome)) { $("input[type=date]").datepicker({ dateFormat: "yy-mm-dd", showOtherMonths: true, selectOtherMonths: true }); } //////////////////////// }); // document ready })(jQuery); // source --> https://sportvitalitas.hu/static/js/woocommerce.js /** * Custom Javascript for WooCommerce * * @package RaiseApp * @version RaiseApp 1.3.0 */ (function ($) { "use strict"; // library function $.extend({ // close quick view popup closeQuickview: function () { $(".popup-quickview-wrap.opened").fadeOut(300, function () { $(this).remove(); $("body").css({"overflow-y": "auto"}); }); }, // get string width in pixel getWidthOfText: function(txt, fontsize, fontname) { var span = $("").appendTo("body").text(txt).css({ "height": "0", "display": "inline-block", "visibility": "hidden", "font-size": fontsize, "font-family": fontname }), width = span.width(); span.remove(); return width; } }); // update count of menu icon by ajax cart $(document).ajaxComplete(function (event, xhr, settings) { if (xhr.responseJSON && xhr.responseJSON.fragments) { var response = xhr.responseJSON.fragments["div.widget_shopping_cart_content"]; if (response) { var list = $("#minicart-list").html(response), total = list.find(".woocommerce-mini-cart-item").length; var numObj = $(".mini-cart-num"); if (total) { if (numObj.children("span").length) { numObj.children("span").text(total).show(); } else { numObj.append("" + total + ""); } } else { numObj.children("span").remove(); } } } }); // Menu section $(document).on("click", ".woo-menu .woo-menu-item > a", function(e) { if($(this).hasClass('wishlist-num')) { return; } e.preventDefault(); var menuItem = $(this).closest(".woo-menu-item"); if(!menuItem.hasClass("active")) { menuItem.siblings(".woo-menu-item").removeClass("active"); menuItem.addClass("active"); } }); $(document).on("click", ".woo-menu .woo-menu-item.woo-menu-search > a", function() { $(this).siblings(".woo-submenu").find(".search-field").focus(); }); $(document).on("click", function (e) { if (!$(e.target).closest(".woo-menu").length) { $(".woo-menu .woo-menu-item").removeClass("active"); } }); // mobile tab $(document).on("click", "#woo-menu-mobile-tab a", function (e) { if($(this).hasClass('wishlist-num')) { return; } e.preventDefault(); var submenu = $($(this).attr("href")).children(".woo-submenu"); if (submenu.length && !submenu.is(":visible")) { $(".woo-submenu").slideUp(300); submenu.slideDown(300); } else { submenu.slideUp(300); } }); // responsive $(window).on("resize", function () { $(".woo-submenu").hide(); }); // add tip to price filter widget $(document).ready(function () { setTimeout(function() { $(".price_slider_wrapper .price_slider.ui-slider.ui-slider-horizontal").each(function () { // ToolTip var tooltipWrap = $(this).closest(".price_slider_wrapper"), tooltipStart = "
", tooltipEnd = "
", fromValue = tooltipWrap.find(".price_slider_amount span.from").text(), tooltipFrom = tooltipStart + "" + fromValue + "" + tooltipEnd, toValue = tooltipWrap.find(".price_slider_amount span.to").text(), tooltipTo = tooltipStart + "" + toValue + "" + tooltipEnd; $(tooltipFrom).appendTo(tooltipWrap.find(".ui-slider-handle")[0]).show(); $(tooltipTo).appendTo(tooltipWrap.find(".ui-slider-handle")[1]).show(); }); }, 200); }); // woocommerce quantity input box's decrement button $(document).on("click", ".btn-quantity-decrement", function (e) { var inputElem = $(this).parent().children("input[type=number]"); var newVal = parseInt(inputElem.val()) - 1; if (newVal > 0) { inputElem.val(newVal); } else { inputElem.val(0); } $('.woocommerce-cart-form input[name="update_cart"]').prop('disabled', false); }); // woocommerce quantity input box's increment button $(document).on("click", ".btn-quantity-increment", function (e) { var inputElem = $(this).parent().children("input[type=number]"); var newVal = parseInt(inputElem.val()) + 1; if (newVal > 0) { inputElem.val(newVal); } else { inputElem.val(0); } $('.woocommerce-cart-form input[name="update_cart"]').prop('disabled', false); }); // woocommerce update cart button $(document).on("click", "a.update-cart", function (e) { e.preventDefault(); $(this).parent().children('input[name="update_cart"]').click(); }); // woocommerce apply coupon button $(document).on("click", "a.apply-coupon", function (e) { e.preventDefault(); $(this).parent().children('input[name="apply_coupon"]').click(); }); // woocommerce place order button $(document).on("click", "a.btn-place-order", function (e) { e.preventDefault(); $(this).parent().children('input[name="woocommerce_checkout_place_order"]').click(); }); // shop product list - auto load more $.loadmore_shop = function () { var moreBtn = $("[data-shop-load-more]"), contentWrap = $("#products-list"), moreNum = moreBtn.data("shop-load-num"), moreMaxNum = moreBtn.data("shop-load-maxnum"), layout = moreBtn.data("shop-load-more") ? moreBtn.data("shop-load-more") : "grid", filterStr = moreBtn.data("shop-load-filter"), additional_params = moreBtn.data("shop-params"), preloader = $.ajaxPreloader(moreBtn); // start ajax call $.isAjaxing = true; moreBtn.show(); // hide more button preloader.show(); // show preloader $.ajax({ type: "POST", url: raiseapp_var.ajax_url + "?" + additional_params, data: { action: "raiseapp_load_more", type: "product", tpl: "shop_list", layout: layout, paged: moreNum + 1, filter: filterStr }, success: function (response) { // it not error if (response != "error") { // remove preloader preloader.hide().remove(); // countdown for next ajax calling moreNum++; if (moreNum < moreMaxNum) { moreBtn.data("shop-load-num", moreNum); } else if (moreNum >= moreMaxNum) { moreBtn.remove(); // if no more posts } // add new contents into container if wrap is not gridalicious switch ($("[data-shop-list]").data("shop-list")) { case "masonry": contentWrap.masonryGrid_append(response); break; default: contentWrap.append(response); break; } } $.isAjaxing = false; }, error: function (XMLHttpRequest, textStatus, err) { console.log(err); } }); }; $(document).ready(function () { // blog post list - auto load more if ($("[data-shop-load-more]").length) { $(window).on("scroll", function () { var shopLoader = $("[data-shop-load-more]"), wT = $(document).scrollTop(), wH = $(window).height(); if (shopLoader.length && shopLoader.offset().top + 120 < wT + wH && $.isAjaxing == false) { $.loadmore_shop(); } }); } // implementation var bootstrapMasonry = function() { setTimeout(function() { $(".product-masonryGrid").each(function() { $(this).masonryGrid(); }); }, 600); }; if ($(".product-masonryGrid").length) { if (($("[data-preload-progress]").length && typeof($.preloader) == "function") || ($("body[data-preload-default]").length && $("body[data-preload-default]").data("preload-default"))) { $(window).load(function() { bootstrapMasonry(); }); } else { bootstrapMasonry(); } } }); // quick view in product list $.quickviewOpened = 0; $(document).on("click", ".product-quickview", function (e) { e.preventDefault(); // ajax calling counter $.quickviewOpened = 0; // create popup $("body").css({"overflow-y": "hidden"}).append("\ \ "); var product = $(this).data("product"), quickview = $(".popup-quickview-wrap").addClass("opened"), // quick view popup wrapper quickviewCont = $(".popup-quickview-content"), // contents section in quick view popup preloader = $.ajaxPreloader(quickviewCont).show(), // preloader for ajax calling preloaderEnd = function () { // remove preloader $.quickviewOpened++; if ($.quickviewOpened > 1) { preloader.hide().remove(); } }; // get content by ajax calling $.post( raiseapp_var.ajax_url, { action: "raiseapp_product_quickview", initial: true }, function (response) { preloaderEnd(); quickview.append(response); } ); $.post( raiseapp_var.ajax_url, { action: "raiseapp_product_quickview", product: product }, function (response) { quickviewCont.addClass("loaded").html(response); $(".variations_form").each(function () { $(this).wc_variation_form(); }); var imgs = $(".woocommerce-product-gallery").find("img"), loaded = imgs.length; if(loaded == 0) { $(window).trigger("resize"); // restart thumbnail gallery quickviewCont.addClass("show-product"); // show product } else { var quickViewComplete = function() { loaded--; if(loaded == 0) { preloaderEnd(); setTimeout(function () { // repair slider effect $(".woocommerce-product-gallery .flex-control-nav li:last-child img").trigger("click"); $(".woocommerce-product-gallery .flex-control-nav li:first-child img").trigger("click"); // restart thumbnail gallery $(window).trigger("resize"); // show product quickviewCont.addClass("show-product"); }, 500); } }; imgs.each(function() { if (this.complete) { quickViewComplete($(this)); } else { $(this).load(function() { quickViewComplete($(this)); }); } }); } } ); }); // close quick view popup $(document).on("click", ".popup-quickview-overlay", function (e) { if ($.quickviewOpened > 1) { e.preventDefault(); $.closeQuickview(); } }); $(document).on("click", ".popup-quickview-closer", function (e) { e.preventDefault(); $.closeQuickview(); }); // advanced product search vc-addon $(document).ready(function () { $("[data-advanced-search]").each(function () { var searchFormWrap = $(this), searchCat = searchFormWrap.find("[name=\"product_cat\"]"), searchMin = searchFormWrap.find("[name=\"min_price\"]"), searchMax = searchFormWrap.find("[name=\"max_price\"]"); // rebuild category select box searchCat.wrap("
"); var searchCatWrap = searchFormWrap.find(".advanced-search-category"), searchCatView = ""; searchCatView = ""; searchCatView += ""; searchCatWrap.append(searchCatView); // add event callback for custom select box searchCatWrap.on("click", "span", function (e) { e.preventDefault(); $(this).closest(".advanced-search-category").toggleClass("opened"); }); searchCatWrap.on("click", "li", function (e) { e.preventDefault(); var searchFormWrap = $(this).closest("[data-advanced-search]"), searchCat = searchFormWrap.find("[name=\"product_cat\"]"), searchMin = searchFormWrap.find("[name=\"min_price\"]"), searchMax = searchFormWrap.find("[name=\"max_price\"]"); searchCat.val($(this).data("cat")); // change value of select var optionElem = searchCat.children("option:selected"), min = parseFloat(optionElem.data("min")), max = parseFloat(optionElem.data("max")); searchCatWrap.children("span").text(optionElem.text()).data({min: min, max: max}); // change text of custom select box searchMin.val(parseFloat(optionElem.data("min"))); // reset min price as selected category searchMax.val(parseFloat(optionElem.data("max"))); // reset min price as selected category searchFormWrap.find("input[type=\"number\"]").trigger("keyup"); // apply selectable css searchCatWrap.removeClass("opened"); $(this).siblings().removeClass("active"); $(this).addClass("active"); }); searchCatWrap.on("change", searchCat, function () { $(this).closest("[data-advanced-search]").find("li[data-cat=\"" + searchCat.children("option:selected").attr("value") + "\"]").trigger("click"); }); // reset price input box by dynamical width searchFormWrap.find("input[type=\"number\"]").on("keyup keypress", function() { var width = $.getWidthOfText($(this).val(), $(this).css("font-size"), $(this).css("font-family")); $(this).width(width); }); searchCat.trigger("change"); $.fn.extend({ resetByTerm: function(v) { var searchFormWrap = $(this).closest("[data-advanced-search]"), searchCat = searchFormWrap.find("[name=\"product_cat\"]"), optionElem = searchCat.children("option:selected"), defaultMin = optionElem.data("min"), defaultMax = optionElem.data("max"); if(v < defaultMin) { v = defaultMin; } else if(v > defaultMax) { v = defaultMax; } $(this).val(v).trigger("keyup"); return $(this); } }); // min/max price input validation searchMin.on("change", function(e) { e.preventDefault(); var searchFormWrap = $(this).closest("[data-advanced-search]"), searchMax = searchFormWrap.find("[name=\"max_price\"]"), price = parseFloat($(this).val()), max = parseFloat(searchMax.val()); if(price > max) { $(this).resetByTerm(max); } else { $(this).resetByTerm(price); } }); searchMax.on("change", function(e) { e.preventDefault(); var searchFormWrap = $(this).closest("[data-advanced-search]"), searchMin = searchFormWrap.find("[name=\"min_price\"]"), price = parseFloat($(this).val()), min = parseFloat(searchMin.val()); if(price < min) { $(this).resetByTerm(min) } else { $(this).resetByTerm(price); } }); }); }); $(document).on("click", function (e) { if (!$(e.target).closest(".advanced-search-category").length) { if ($(".advanced-search-category ul").is(":visible")) { $(".advanced-search-category").removeClass("opened"); } } }); // woocommerce wishlist $(document).ready(function() { $('.add-to-wishlist-button').on('click', function (e) { e.preventDefault(); var el = $(this); if(el.parent().find('.yith-wcwl-wishlistaddedbrowse').hasClass('show') || el.parent().find('.yith-wcwl-wishlistexistsbrowse').hasClass('show')){ var link = el.parent().find('.yith-wcwl-wishlistexistsbrowse a').attr('href'); window.location.href = link; return; } el.addClass('loading'); el.parent().find('.add_to_wishlist').click(); }); var raiseapp_add_to_wishlist = function() { $('.add-to-wishlist-button.loading').removeClass('loading').addClass('wishlist-added'); $.ajax({ beforeSend: function () { }, complete: function () { }, data: { action: 'raiseapp_update_wishlist_count' }, dataType: 'json', success: function (data) { var numObj = $(".wishlist-num"); var count = data.count; if (count > 0) { if (numObj.children("span").length) { numObj.children("span").text(count).show(); } else { numObj.append("" + count + ""); } } else { numObj.children("span").remove(); } }, url: yith_wcwl_l10n.ajax_url }); }; $('body').on('added_to_wishlist removed_from_wishlist', raiseapp_add_to_wishlist); }); })(jQuery);